#include <iostream>
#include <string>
#include <fstream>
#include "bundle.h"

int main(int argc, char* argv[])
{
  if(argc != 3)
  {
    std::cout << "命令黄参数使用错误！" << std::endl;
    return -1;
  }

  std::string ifilename = argv[1];//原始文件名称
  std::string ofilename = argv[2];//压缩后文件名称

  std::ifstream ifs;
  ifs.open(ifilename, std::ios::binary);//打开原始文件
  ifs.seekg(0, std::ios::end);//跳转到文件结尾
  size_t fsz = ifs.tellg();//获取当前文件指针到文件开头的偏移量，用于计算文件的大小
  ifs.seekg(0, std::ios::beg);//跳转到文件开头
  std::string body;//创建临时缓冲区
  body.resize(fsz);
  ifs.read(&body[0], fsz);//把原始文件中的数据写入缓冲区

  std::string packed = bundle::pack(bundle::LZIP, body);//压缩缓冲区中的数据

  std::ofstream ofs;
  ofs.open(ofilename, std::ios::binary);
  ofs.write(&packed[0], packed.size());//将压缩后的文件数据写入到新建的文件中

  ifs.close();
  ofs.close();
  return 0;
}
